1
Passaggio dai thread alle istanze di programma
AI023Lesson 4
00:00

In Triton, l'unità fondamentale di esecuzione passa dal thread scalare CUDA all' istanza di programma. Questo rappresenta un'astrazione di un blocco di thread GPU, dove un'istanza singola gestisce contemporaneamente un blocco vettorizzato di elementi.

1. L'identità dell'istanza di programma

Ogni unità di esecuzione recupera la propria identità tramite pid = tl.program_id(asse=0). Pensa a un carrello elevatore in magazzino (l'istanza di programma) che solleva un pallet (il blocco) di 128 scatole, rispetto a un singolo operatore (thread CUDA) che solleva una sola scatola.

2. Triton vs. tensori di PyTorch

Comprendere il divario semantico è fondamentale per la gestione della memoria:

  • Tensor di PyTorch: Un oggetto Python lato host che racchiude lo spazio di memorizzazione VRAM, i passi e i metadati.
  • Tensor di Triton: Un oggetto a livello di compilatore che rappresenta valori o puntatori residenti in registri o SRAM.
Visualizzazione di PyTorch
Oggetto Python che punta a memoria globale contigua.
Visualizzazione di Triton
Un blocco 2D/1D di dati all'interno dei registri del compilatore.

3. Natura SPMD

Triton segue un modello Programma singolo, dati multipli (SPMD) di flusso. Ogni istanza di programma esegue il esatto stesso codice. La divergenza si verifica solo quando la logica utilizza il pid per calcolare offset di memoria specifici.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>